$(function () {
  // 实现分页
  var laypage = layui.laypage
  // 处理日期的格式化： 基于模板引擎的过滤器
  template.defaults.imports.formatDate = function (data) {
    // 实现日期的格式化：把参数data日期字符串转换为日期对象
    var d = new Date(data)
    var year = d.getFullYear()
    var month = addZero(d.getMonth() + 1)
    var day = addZero(d.getDate())
    var hour = addZero(d.getHours())
    var minutes = addZero(d.getMinutes())
    var seconds = addZero(d.getSeconds())
    // return year + '-' + month + '-' + day + ' ' + hour + ':' + minutes + ':' + seconds
    return year + '-' + month + '-' + day
  }

  // 补零函数
  function addZero(n) {
    return n < 10 ? '0' + n : n;
  }
  // 文章列表模块
  var form = layui.form
  // 获取筛选文章分类列表数据
  function loadCateList () {
    $.ajax({
      type: 'get',
      url: 'my/article/cates',
      success: function (res) {
        // 把数据填充到模板中
        var tags = template('cate-tpl', res)
        $('#category').html(tags)
        // 重新渲染select列表
        form.render('select')
      }
    })
  }
  loadCateList()

  var params = {
    // 当前的页码
    pagenum: 1,
    // 每页显示几条数据
    pagesize: 3
  }

  // 处理筛选条件查询
  $('#query-btn').click(function (e) {
    e.preventDefault()
    // 获取筛选条件的值
    var conditions = $('#search-form').serializeArray()
    // 把筛选条件组合到请求参数中
    conditions.forEach(function (item) {
      if (item.value) {
        // 动态向params中添加属性
        params[item.name] = item.value
      } else {
        delete params[item.name]
      }
    })
    // 调用接口
    loadArticleList(params)
  })

  // 获取文章列表数据
  function loadArticleList (params) {
    $.ajax({
      type: 'get',
      url: 'my/article/list',
      data: params,
      success: function (res) {
        // 把数据填充到模板中
        var tags = template('list-tpl', res)
        $('.layui-table tbody').html(tags)
        // 渲染完成列表数据后展示分页
        laypage.render({
          // 分页条渲染位置
          elem: 'page',
          // 当前页码
          curr: params.pagenum,
          // 数据总数，从服务端得到
          count: res.total,
          // 每页显示的条数
          limit: params.pagesize,
          // 每页显示条数列表
          limits: [3, 10, 30, 40, 100],
          // 分页条布局效果
          layout: ['prev', 'page', 'next', 'skip', 'count', 'limit'],
          // 页面切换是触发的动作:修改页码、或者每页的条数，然后重新调用接口
          jump: function (obj, first) {
            // obj 表示分页的所有参数；
            // first用于判断首次加载
            // 这里触发时，需要修改当前页码
            params.pagenum = obj.curr
            // 切换每页显示条数时，修改pagesize
            params.pagesize = obj.limit
            // 重新加载接口数据
            if (!first) {
              // 首次不触发，切换页码时触发
              loadArticleList(params)
            }
          }
        })
      }
    })
  }

  // 页面首次加载时，我们手动调用了接口
  loadArticleList(params)

  // 控制文章的删除操作
  $('.layui-table tbody').on('click', '.layui-btn-danger', function (e) {
    // 获取要删除的文章的id
    var id = $(e.target).data('id')
    // 调用接口删除文章
    layer.confirm('确认要删除吗？', function () {
      $.ajax({
        type: 'get',
        url: 'my/article/delete/' + id,
        data: {id: id},
        success: function (res) {
          if (res.status === 0) {
            // 删除成功，提示一下，刷新列表
            layer.msg(res.message)
            loadArticleList(params)
          }
        }
      })
    })
  })
})